The present invention relates to the display and manipulation of command-related items in a graphical operating system, and more particularly relates to an improved method for displaying and manipulating various controls in a system that uses a graphical user interface.
Most modem computer software employs a graphical user interface (GUI) to convey information to and receive commands from users. A graphical user interface relies on a variety of GUI objects or controls, including icons, text, drop down menus, toolbars, dialog boxes, buttons, and the like. A user typically interacts with a graphical user interface by using a pointing device (e.g., a mouse) to position a pointer or cursor over an object and xe2x80x9cclickingxe2x80x9d on the object. An example of an operating system that employs a graphical user interface is the xe2x80x9cWINDOWS 95xe2x80x9d operating system, which is manufactured and sold by Microsoft Corporation of Redmond, Wash.
In a program module (e.g., an operating system or application program) that employs a graphical user interface, commands are typically represented by controls that are displayed in drop down menus and toolbars. Drop down menus, which may also be referred to as popup menus or menu popups, are used to organize numerous controls under major headings, which are displayed in a menu bar that appears along the top of a window. Each heading is a xe2x80x9cmenu controlxe2x80x9d that represents a drop down menu. A menu drops down when the user selects the associated menu control in the menu bar, thereby allowing access to the controls that are included in the drop down menu. A user may select or invoke a command by clicking on the menu control, dragging the pointer down to the control associated with the desired command, and releasing the mouse button. Alternatively, the user may click on the menu control and release the mouse, then click and release on the appropriate control in the drop down menu. The primary advantage of drop down menus is that they can be used to contain and organize a large number of controls, but take up very little screen space when not in use. In addition, menus can also be operated using the keyboard when a pointing device is unavailable or unusable.
Toolbars usually include buttons, which are arranged in one or more rows or columns. Each button is associated with a command, and is identified by an icon that represents or depicts that command. For example, the xe2x80x9cprintxe2x80x9d command may be invoked by clicking on a button whose icon depicts a printer. Significantly, a user can invoke commands on the toolbar by clicking once on the associated button. In addition to buttons, toolbars can also include other interactive controls, such as text boxes, combo boxes, etc. Some toolbars can be turned on or off, and can be oriented horizontally or vertically. Although most toolbars are visually attached to a window, some may float above a window. The primary advantage of toolbars is that they present a set of buttons or controls that are only one click away while the user is using the associated program. A corresponding disadvantage of toolbars is that exposing a large number of commands requires displaying a large number of controls, which require a relatively large amount of screen space. Another disadvantage is that conventional toolbars require the use of a pointing device and may not be operated using a keyboard.
Although toolbars and drop down menus both provide ways to display controls (many of which are associated with the same command), they look and feel very different. In drop down menus, commands are usually represented by simple menu items, such as text without icons. In toolbars, commands are often represented by icons without text. This difference presents a disadvantage for users (especially new users) because there are no common visual cues to alert a user to the connection or linkage between identical commands that appear in a drop down menu and on a toolbar.
As application programs have incorporated ever increasing numbers of commands, drop down menus have become full and software developers have relied more heavily on toolbars as the primary means for exposing some of the commands to the user. Unfortunately, a command that is only available on a toolbar may be somewhat obscure and, in many cases, not easily discovered or understood by the user because the command is represented by only a small icon.
In some programs, a user may customize the drop down menus and toolbars. This allows a user to add controls (which represent commands) to or delete controls from menus and toolbars. In the prior art, drop down menus and toolbars are customized using different processes. Some toolbars may be customized using a drag and drop process to drag controls from a list of available commands to a toolbar. Drop down menus typically require the use of dialog boxes and other techniques to add or delete controls. In addition, although some commands may be represented on menus or in toolbars or both, other commands are restricted to one or the other. This difference results in several drawbacks. First, limiting some commands to drop down menus and others to toolbars restricts the user""s ability to efficiently and conveniently group commands.
Second, treating drop down menus and toolbars differently requires the program to maintain different lists of available commands for menus and toolbars. This results in duplication and larger program code, which requires more memory to store and more time to load.
In the prior art, toolbars have contained a variety of rich, interactive controls, such as buttons, combo boxes, text boxes, etc.
However, drop down menus have been restricted to representing commands with simple menu items, such as a text string. Therefore, if an application was to provide one of these rich controls, it had to use a toolbar to do so.
Another feature associated with drop down menus and toolbars has to do with OLE menu merging, which occurs when one application displays an embedded object in another application""s document. For example, a Microsoft Excel spreadsheet (the object) may be embedded and displayed in a Microsoft Word document (the container). When the embedded object is activated, it may be edited. In order to facilitate this process, Microsoft""s Object Linking and Embedding (OLE) interface merges the menus from the spreadsheet and word processing programs, thereby providing relevant commands to the user. However, in the prior art, menu merging required an application to contribute its entire menu. In addition, toolbars were not merged, which resulted in only those toolbars provided by the embedded object being displayed and the controls representing client-type functions (e.g., print) being disabled. This results in several drawbacks. First, some useful commands may be not be available while the embedded object is activated. In addition, some of the available commands may not be useful or intuitive.
In another aspect, prior art menus have provided tear off menus, which may be torn off by moving the mouse cursor past the edges of the displayed menu. However, the prior art method did not include any visual cue that a menu could be torn off, and was therefore not easily discoverable. In addition, these menus are prone to being torn off accidentally if the user tries to close the window by the common practice of moving the cursor beyond the window border and releasing the mouse button.
In summary, prior art drop down menus and toolbars provide a good way to display controls and expose commands. However, there are several disadvantages that flow from the fact that drop down menus and toolbars are treated differently, and may include different controls. Furthermore, menu merging has been limited to menus, and requiring an application to contribute an entire menu has resulted in the unavailability of some useful commands.
Therefore, there is a need in the art for an improved command bar that overcomes these drawbacks. An improved command bar would allow all controls to be included in either menu-type containers or toolbar-type containers and would include visual cues that indicate the linkage between similar commands. In addition, an improved command bar would allow the user to have greater control over what commands can be put where, thereby allowing commonly used controls to be placed in a toolbar-type container and less commonly used controls to be placed in a menu-type container. This would allow rich, interactive controls to be placed in a menu popup, and would increase efficiency of use and of screen space. An improved command bar would eliminate the use of different customization procedures and would be operable from the keyboard regardless of whether it is a menu-type container or a toolbar-type container. With respect to menu and toolbar merging, an improved command bar would allow each application to contribute individual commands to both menu-type containers and toolbar-type containers, and would arrange them in a user-friendly and intuitive manner. This would ensure that both container and object-related buttons come from the appropriate source and operate properly when selected. Finally, an improved command bar would provide an improved method for tearing off tearable menus. This method would provide visual cues that the menu can be separated from the menu or toolbar and would prevent the menu from being torn off accidentally.
The present invention satisfies the above-described needs by providing an improved method for displaying controls in a system using a graphical user interface. Controls are displayed in command bars, which may be displayed as both menu-like containers and toolbar-like containers. Controls may be included and arranged in either type of command bar container, regardless of whether they are simple menu items or interactive controls. When an application embeds an object in another application, each application contributes individual commands to the merged menu-type containers and toolbar-type containers, and arranges then in a useful, intuitive order.
Generally described, the present invention provides a method for providing command bars. The method includes the steps of displaying toolbar-like command bar that includes at least one menu control. Upon receiving an indication that the menu control has been selected, a menu-like command bar is displayed. The menu-like command bar includes at least one interactive control.
In another aspect, the present invention provides a data structure for providing controls in a command bar. A computer-readable medium includes a plurality of data fields stored on the medium and representing a data structure. The data fields include first, second, and third data fields. The first data field including data identifying a command bar. The second data field contains data representing a plurality of controls included in the command bar, where the controls are chosen from a group including simple menu items and interactive controls. The third data field contains data representing the display state of the command bar. The display state may include data representing a menu-like display state or a toolbar-like display state. When the command bar is a toolbar-like command bar, the control may includes at least one popup menu control. When the command bar is a menu-like command bar, the controls may include a simple menu item and at least one interactive control.
In another aspect, the present invention provides a method for implementing command bars in an application program module. The method is implemented in a computer system including a shared program module that includes functions for manipulating the command bars and shared memory for storing data associated with the command bars. The method includes, in the application program module, calling the functions in order to display a menu-like command bar including an interactive control. In response to an input signal, the application program module receives from the shared program module an indication of the selection of the interactive control. In response to the indication, the application program module determines a function associated with the control and performs the function.
In another aspect, the present invention provides a method for customizing a command bar that includes a menu control. The method includes displaying a first command bar including a menu control and displaying a container including an available control. The method includes receiving from an input device an indication that the available control has been moved to the menu control. In response to the available control being moved to the menu control, a menu popup associated with the menu control is displayed. The method includes receiving from the input device an indication that the available control has been moved to a position in the menu popup. In response, the available control is displayed in the position in the menu popup.
In yet another aspect, the present invention provides a method for merging a first set of items from a first container in a first program module and a second set of items from a second container in a second program module. The method includes determining which of the first set of items are eligible to be donated and which of the second set of items are eligible to be donated. The eligible items from the first set of items are combined with the eligible items from the second set of items. A merged command bar, including at least one item from the first set of items and at least one item from the second set of items, is displayed.
In yet another aspect, the present invention provides a method for removing a menu popup from a command bar. The method includes displaying a command bar and displaying a menu popup including a drag handle. The menu popup is connected to the command bar. The method includes receiving from the input device an indication that the drag handle has been dragged away from the command bar. The menu popup is moved away from the command bar in response to the indication. In response to an indication that the menu popup has been dropped, the menu popup is displayed in a position corresponding to the drop indication. In this manner, the menu popup is removed from the command bar.
Alternatively, a menu popup may be removed from a command bar by displaying a command bar and displaying an original menu popup including a drag handle. The original menu popup is connected to the command bar. In response to an indication that the drag handle has been selected, the removed menu popup is displayed in a default position separate from the command bar.
The various aspects of the present invention may be more clearly understood and appreciated from a review of the following detailed description of the disclosed embodiments and by reference to the appended drawings and claims.